package com.xyd.util;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

/**
 * 类描述：为上传图片命名，防止文件名相同而覆盖
 *
 * @author 张吉哲
 * @date 2021/1/12 10:56
 */
public class IpTimeStamp {

  /** 定义SimpleDateFormat对象 */
  private SimpleDateFormat sdf = null;
  /** 接收ip地址 */
  private String ip = null;

  public IpTimeStamp(String ip) {
    this.ip = ip;
  }

  /**
   * 获得IP+时间戳+三位随机数
   *
   * @return 返回 IP+时间戳+三位随机数 的字符串
   */
  public String getIPTimeRand() {
    StringBuffer buffer = new StringBuffer();
    if (this.ip != null) {
      // 进行拆分操作
      String[] s = this.ip.split("\\:");
      for (String value : s) {
        // 不够三维数字的要补零
        buffer.append(this.addZero(value, 3));
      }
    }
    buffer.append(this.getTimeStamp());
    Random r = new Random();
    for (int i = 0; i < 3; i++) {
      buffer.append(r.nextInt(10));
    }
    return buffer.toString();
  }

  /**
   * 补0操作
   *
   * @param str 原字符串
   * @param len 不足该长度自动补0
   * @return 修改后的字符串
   */
  private String addZero(String str, int len) {
    StringBuffer s = new StringBuffer();
    s.append(str);
    while (s.length() < len) {
      s.insert(0, "0");
    }
    return s.toString();
  }

  /**
   * 取得当前系统时间
   *
   * @return 当前时间字符串
   */
  private String getDate() {
    this.sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
    return this.sdf.format(new Date());
  }

  /**
   * 取得时间戳
   *
   * @return
   */
  private String getTimeStamp() {
    this.sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
    return this.sdf.format(new Date());
  }
}

